package Classic150;

import java.util.PriorityQueue;
import java.util.Queue;

public class 数组中的第K个最大元素 {
    /*
        第k个最大或最小问题，通常使用优先级队列构成小顶堆或大顶堆
     */
    public int findKthLargest(int[] nums, int k) {
        Queue<Integer> minHeap = new PriorityQueue<>();
        for (int num : nums) {
            if (k-- > 0) minHeap.offer(num);
            else {
                if (num > minHeap.peek()) {
                    minHeap.poll();
                    minHeap.offer(num);
                }
            }
        }
        return minHeap.poll();
    }
}
